---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
  creationTimestamp: null
  name: ciliumloadbalancerippools.cilium.io
spec:
  group: cilium.io
  names:
    categories:
    - cilium
    kind: CiliumLoadBalancerIPPool
    listKind: CiliumLoadBalancerIPPoolList
    plural: ciliumloadbalancerippools
    shortNames:
    - ippools
    - ippool
    - lbippool
    - lbippools
    singular: ciliumloadbalancerippool
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.disabled
      name: Disabled
      type: boolean
    - jsonPath: .status.conditions[?(@.type=="cilium.io/PoolConflict")].status
      name: Conflicting
      type: string
    - jsonPath: .status.conditions[?(@.type=="cilium.io/IPsAvailable")].message
      name: IPs Available
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v2alpha1
    schema:
      openAPIV3Schema:
        description: CiliumLoadBalancerIPPool is a Kubernetes third-party resource
          which is used to defined pools of IPs which the operator can use to to allocate
          and advertise IPs for Services of type LoadBalancer.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: Spec is a human readable description for a BGP load balancer
              ip pool.
            properties:
              allowFirstLastIPs:
                description: AllowFirstLastIPs, if set to `yes` means that the first
                  and last IPs of each CIDR will be allocatable. If `no` or undefined,
                  these IPs will be reserved. This field is ignored for /{31,32} and
                  /{127,128} CIDRs since reserving the first and last IPs would make
                  the CIDRs unusable.
                enum:
                - "Yes"
                - "No"
                type: string
              blocks:
                description: Blocks is a list of CIDRs comprising this IP Pool
                items:
                  description: CiliumLoadBalancerIPPoolIPBlock describes a single
                    IP block.
                  properties:
                    cidr:
                      format: cidr
                      type: string
                    start:
                      type: string
                    stop:
                      type: string
                  type: object
                type: array
              cidrs:
                description: 'Cidrs is a list of CIDRs comprising this IP Pool Deprecated:
                  please use the `blocks` field instead. This field will be removed
                  in a future release. https://github.com/cilium/cilium/issues/28590'
                items:
                  description: CiliumLoadBalancerIPPoolIPBlock describes a single
                    IP block.
                  properties:
                    cidr:
                      format: cidr
                      type: string
                    start:
                      type: string
                    stop:
                      type: string
                  type: object
                type: array
              disabled:
                default: false
                description: Disabled, if set to true means that no new IPs will be
                  allocated from this pool. Existing allocations will not be removed
                  from services.
                type: boolean
              serviceSelector:
                description: ServiceSelector selects a set of services which are eligible
                  to receive IPs from this
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          enum:
                          - In
                          - NotIn
                          - Exists
                          - DoesNotExist
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      description: MatchLabelsValue represents the value from the
                        MatchLabels {key,value} pair.
                      maxLength: 63
                      pattern: ^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
            type: object
          status:
            description: "Status is the status of the IP Pool. \n It might be possible
              for users to define overlapping IP Pools, we can't validate or enforce
              non-overlapping pools during object creation. The Cilium operator will
              do this validation and update the status to reflect the ability to allocate
              IPs from this pool."
            properties:
              conditions:
                description: Current service state
                items:
                  description: "Condition contains details for one aspect of the current
                    state of this API Resource. --- This struct is intended for direct
                    use as an array at the field path .status.conditions.  For example,
                    \n type FooStatus struct{ // Represents the observations of a
                    foo's current state. // Known .status.conditions.type are: \"Available\",
                    \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
                    // +listType=map // +listMapKey=type Conditions []metav1.Condition
                    `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
                    protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
                  properties:
                    lastTransitionTime:
                      description: lastTransitionTime is the last time the condition
                        transitioned from one status to another. This should be when
                        the underlying condition changed.  If that is not known, then
                        using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: message is a human readable message indicating
                        details about the transition. This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: observedGeneration represents the .metadata.generation
                        that the condition was set based upon. For instance, if .metadata.generation
                        is currently 12, but the .status.conditions[x].observedGeneration
                        is 9, the condition is out of date with respect to the current
                        state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: reason contains a programmatic identifier indicating
                        the reason for the condition's last transition. Producers
                        of specific condition types may define expected values and
                        meanings for this field, and whether the values are considered
                        a guaranteed API. The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                        --- Many .condition.type values are consistent across resources
                        like Available, but because arbitrary conditions can be useful
                        (see .node.status.conditions), the ability to deconflict is
                        important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - type
                x-kubernetes-list-type: map
            type: object
        required:
        - metadata
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
